      !< @file
      !>@brief Subrotina para fazer a transformada inversa de Fourier
      !>
      !> A partir dos valores no domínio da frequência Sw é feita a transformada inversa para o domínio do tempo Staux.
      subroutine invdft(Sw,omegas,Nomega,ntps,Staux,nttotal)


      implicit none

      complex*16, parameter :: imag = (0.,1.) !< unidade imaginária
      double precision, parameter :: Pi = 4.*atan(1.) !< número Pi

      complex*16 :: Sw(2*Nomega) !< componentes no domínio da frequência
      double precision :: Omegas(2*Nomega) !< frequências angulares
      integer :: Nomega !< número de frequências
      integer :: ntps !< número de amostras por segundo
      double precision :: Staux(nttotal) !< amostras no domínio do tempo
      integer :: nttotal !< número de amostras no período

      double precision :: dt !< intervalo de tempo
      double precision :: df !< intervalo entre frequências
      integer :: kw !< contado de frequências
      integer :: it ! contador de instantes de tempo



      dt=1.0d0/(dfloat(ntps))



      df = dfloat(ntps)/dfloat(nttotal) !< o mesmo que 1/tf = 1/periodo



      do it=0,Nttotal-1
	  Staux(it+1) = 0. 
	  DO kw=1,2*Nomega
	      Staux(it+1) = Staux(it+1) + dreal(Sw(kw)* EXP(imag*omegas(kw)*it*dt)) ! parte real da tranformada inversa de fourier
	  ENDDO
	  Staux(it+1) = Staux(it+1)*df
      enddo





      return
      end subroutine invdft


